/*********************************************************************************
  *Copyright (c)    2021   xldeng
  *FileName:        230.cpp.c
  *Author:          xldeng
  *Version:         1.0
  *Date:            2021/2/15 20:44
  *Description:     
  *Others:          
  *Function List:   
     1.…………
  *History:  
     1.Date:
       Author:
       Modification:
**********************************************************************************/
//给定一个二叉搜索树的根节点 root ，和一个整数 k ，请你设计一个算法查找其中第 k 个最小元素（从 1 开始计数）。
#include "../header.h"

class Solution {
public:
    int kthSmallest(TreeNode *root, int k) {
        traverse(root, k);
        return ans;
    }

private:
    int rank = 0;
    int ans = 0;

    void traverse(TreeNode *root, int k) {
        if (root == nullptr)
            return;
        traverse(root->left, k);
        rank++;
        if (rank == k) {
            ans = root->val;
            return;
        }
        traverse(root->right, k);
    }
};
